package fr.esisar.cs420.traitement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

/**
 * Classe      : Utilisateur
 * Explication : Classe permettant de gérer les fonctions de l'utilisateur
 * @author Hermitte : Dieng : Delay
 *
 */
public class Utilisateur {
	
	
	/**
	 * Méthode permetant de vérifier le login et le motDePasse
	 * @return vrai si le client a réussi à se connecter, faux sinon.
	 */
	public static boolean seConnecter( String mail , String mdp){
		boolean connected = false;
		
		String select = "SELECT mail, MOTDEPASSE, nom, prenom, adresse, codePostal, ville FROM CLIENT where mail LIKE '"+mail+"'";
		
		try {
			/* Recuperation de la connection a la base de donnee */
			Statement stmt = Application.getStmt();
			/* Execution de la commande */
			ResultSet res = stmt.executeQuery(select);
			
			if (res.next())
			{
				/* Si le motDePasse est bon */
				if (mdp.compareTo(res.getString(2).toString()) == 0 ){
					connected = true;
					//instenciation du client
					Application.client = new Client(res.getString(1), res.getString(2),res.getString(3),res.getString(4),res.getString(5),Integer.valueOf(res.getString(6)),res.getString(7));
				}
			}
			stmt.executeUpdate("COMMIT");
			res.close();
		} catch (SQLException e) {
			
			e.printStackTrace();
		}
		return connected;
		
		
	}

	/**
	 * Méthode permettant de vérifier l'existance d'un compte avec l'adresse mail
	 * @param mail
	 * @return vrai si un compte avec une même adresse mail existe déjà
	 */
	public static boolean existanceCompte(String mail){
		boolean existe = false;
		String select = "SELECT mail FROM CLIENT where mail LIKE '"+mail+"'";
		
		try {
			Statement stmt = Application.getStmt();
			ResultSet res = stmt.executeQuery(select);
			if (res.next())
			{
				//si on rentre dans cette condition, c'est qu'un client existe déjà.
				existe = true;
			}
		} catch (SQLException e) {
			
			e.printStackTrace();
		}
		return existe;
		
		
	}
	
	
	
	
	/**
	 * Créer un nouveau compte. Rajoute une entrée dans la table Client
	 * @return vraie si l'inscription a réussie, faux sinon.
	 */
	public static boolean creerCompte(String mail , String mdp, String nom , String prenom , String adresse, int codePostal, String ville ){
		
		//Récupération des données auprès du client
		//créer une ligne dans la table Client
		String insert = "insert into Client values('"+mail+"','"+mdp+"','"+nom+"','"+prenom+"','"+adresse+"','"+codePostal+"','"+ville+"')";
		try
		{
			Statement stmt = Application.getStmt();
			stmt.executeUpdate(insert);
			stmt.executeUpdate("COMMIT");
			

		} 
		catch (SQLException e)
		{
			System.out.println("Erreur SQL :" + e.getMessage());
			System.out.println("Une erreur est survenu lors de l'inscription.");
			e.printStackTrace();
			return false;
		}
		return true;
	}
}
